package com.cskaoyan.javase.exception.myexception4;

/**
 * @description: 自定义异常
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 如果JDK当中提供的异常不满足需求了，可以自己定义异常
 * 自定义异常，跑不掉java异常体系
 * 如果要定义一个运行时异常，这个类必须继承RuntimeException
 * 如果要定义一个编译时异常，这个类必须继承Exception
 *
 * 输入年龄，判断年龄是否合法，不合法抛出异常
 * IllegalAgeRuntimeException：年龄不合法的运行时异常
 * IllegalAgeException：年龄不合法的编译时异常
 *
 * 比如前端传给你的数据不合法，比如说登录界面 你输入的用户名重复了
 * 这个时候可以在后端抛出异常，然后给前端发消息，前端收到这个消息，就会在页面报红
 *
 * 为什么一定要搞自定义异常呢？
 * 自定义异常可以单独捕获 单独处理
 * 对于自己写的程序 希望能够抛出和JDK当中不一样的异常，做独特的处理
 *
 * 公司中都是有自定义异常的，还有专门的工程处理异常
 * 这种代码工程都是共用的
 *
 */
public class Demo {
    public static void main(String[] args) {
            //judgeAgeRuntime(-1);
        //try {
        //    judgeAge(190);
        //} catch (IllegalAgeException e) {
        //    e.printStackTrace();
        //}
        //catch (IllegalArgumentException e){
        //
        //}
        //System.out.println("111111111111111");

        //judgeAge(10);
    }

    public static void judgeAgeRuntime(int age){
        //判断传入的年龄是否合法
        if (age >  150){
            //不合法的年龄
            throw  new IllegalAgeRuntimeException("你活不了那么大岁数，你就是普通人");
        }
        else if (age < 0 ){
            //不合法的年龄
            throw new IllegalAgeRuntimeException("你的年龄不可能是负数");
        }
    }
    public static void judgeAge(int age) throws IllegalAgeException {
        //判断传入的年龄是否合法
        if (age >  150){
            //不合法的年龄
            throw  new IllegalAgeException("你活不了那么大岁数，你就是普通人");
        }
        else if (age < 0 ){
            //不合法的年龄
            throw new IllegalAgeException("你的年龄不可能是负数");
        }
    }
    public static void judgeAgeIll(int age)  {
        //判断传入的年龄是否合法
        if (age >  150){
            //不合法的年龄
            //非法的参数异常
            throw  new IllegalArgumentException("你活不了那么大岁数，你就是普通人");
        }
        else if (age < 0 ){
            //不合法的年龄
            throw new IllegalArgumentException("你的年龄不可能是负数");
        }
    }
}
class IllegalAgeRuntimeException extends RuntimeException{
    public IllegalAgeRuntimeException() {
        super();
    }
    public IllegalAgeRuntimeException(String message) {
        super(message);
    }

}
class IllegalAgeException extends Exception{
    public IllegalAgeException() {
        super();
    }
    public IllegalAgeException(String message) {
        super(message);
    }

}


